#include<stdio.h>
#include<stdlib.h>
#include<stdarg.h>

//学习可变参数的用法
//1.以宏的方式打印日志
 #define LOG(fmt,...) printf("[%s:%d]"fmt"\n",__FILE__,__LINE__,##__VA_ARGS__)

//以函数的方式调用
//主要接口,va_list va_start va_args va_end
void myprintf(int count,...)
{
    va_list ap;
    va_start(ap,count);
    for(int i=0;i<count;i++)
    {
        int n=va_arg(ap,int);
        printf("%d",n);
    }
    printf("\n");
    va_end(ap);
}
//va_sprintf()
void vs_print(const char* fmt,...)
{
    char* ret;
    va_list lt;
    va_start(lt,fmt);
    int len=vasprintf(&ret,fmt,lt);
    va_end(lt);
    printf("%s\n",ret);
    free(ret);
}
 int main(){

    LOG("hello!,%d",6666);
    myprintf(5,1,2,0,1,2);
    vs_print("hello!,%d",6666);
    return 0;
 }